<?php

namespace App\Org\Developer;
use Exception;

/**
 * @author    陈玉琦
 */
class JsonReturnInfo
{
    /**
     * id 类型参数错误时的返回信息，或者游戏的成绩不正确
     */
    const ID_ERROR = [
        'code' => 4400,
        'message' => 'id 类型参数错误.',
        'imsg' => 'id 类型参数必须是大于 0 的正整数.'
    ];

    /**
     * 同时判断 activity_id 是否是大于 0 的正整数和该活动是否是当前系统用户的
     */
    const NOT_SELF_RESOURCE_ERROR = [
        'code' => 4401,
        'message' => '没有权限.',
        'imsg' => '该活动不是当前系统用户的.'
    ];

    /**
     * 同时判断 activity_id 是否是大于 0 的正整数和该活动是否是当前系统用户的
     */
    const ACTIVITY_ID_FAIL_ERROR = [
        'code' => 4402,
        'message' => '活动 activity_id 参数错误.',
        'imsg' => '活动 activity_id 不是大于 0 的正整数，或者该活动不是当前系统用户的.'
    ];

    /**
     * 文件保存失败的信息
     */
    const SAVE_FILE_ERROR = [
        'code' => 4403,
        'message' => '图片保存失败.',
        'imsg' => '图片保存失败.'
    ];

    /**
     * 开始时间 >= 结束时间 的信息
     */
    const START_TIME_GET_END_TIME_ERROR = [
        'code' => 4404,
        'message' => '开始时间应该小于结束时间.',
        'imsg' => '开始时间应该小于结束时间.'
    ];

    /**
     * 删除旧文件（图片）失败
     */
    const UNLINK_FILE_ERROR = [
        'code' => 4405,
        'message' => '删除文件失败.',
        'imsg' => '删除旧文件（图片）失败.'
    ];

    /**
     * 小于 0 的错误（比如游戏的成绩）
     */
    const LESS_THEN_ZERO_ERROR = [
        'code' => 4406,
        'message' => '不能小于 0.',
        'imsg' => '不能小于 0.'
    ];

    /**
     * 请求参数的值为空时的信息
     *
     * @param string $field 值为空的参数名称
     * @return array
     */
    public static function infoEmpty($field = ''){
        return [
            'code' => 4410,
            'message' => $field . ' 参数错误.',
            'imsg' => $field . ' 不能为空.'
        ];
    }

    /**
     * 被 catch 时的错误
     *
     * @param Exception $e 错误对象
     * @return array
     */
    public static function infoCatch($e = null)
    {
        return [
            'code' => 5555,
            'message' => '发生错误.',
            'imsg' => '被 catch 了：'. $e->getMessage()
        ];
    }

    /**
     * 成功返回的信息
     *
     * @param string $imsg 辅助调试信息
     * @param string $message 正式信息
     * @return array
     */
    public static function infoSuccess($imsg = '', $message = '操作成功.')
    {
        return [
            'code' => 200,
            'message' => $message,
            'imsg' => $imsg
        ];
    }

    /**
     * 失败返回的信息
     *
     * @param string $imsg 辅助调试信息
     * @param string $message 正式信息
     * @return array
     */
    public static function infoFailure($imsg = '', $message = '操作失败.')
    {
        return [
            'code' => 4411,
            'message' => $message,
            'imsg' => $imsg
        ];
    }

    /**
     * 获取数据的类型不匹配（比如要获取投票活动的数据，但查询的结果不是投票活动）
     *
     * @param string $imsg 辅助调试信息
     * @return array
     */
    public static function infoTypeNotMatch($imsg = '')
    {
        return [
            'code' => 4412,
            'message' => '类型不匹配',
            'imsg' => $imsg . ' 类型不匹配'
        ];
    }
}